package avicit.bdp.dlm.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dlm.dto.DlmStatDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * bdp_dlm_stat的统计dao类
 *
 * @author xugb
 * @date 2020/12/1 8:41
 */
public interface DlmStatDao extends BaseDAO<DlmStatDTO> {

    /**
     * 查询存储信息
     *
     * @param allSubTypeIdList 分类下所有子分类
     * @param type             数据源结构类型
     * @param dataSourceId     数据源ID
     * @param statDate         统计日期
     * @return 存储信息
     */
    DlmStatDTO getStorageState(
            @Param("allSubTypeIdList") List<String> allSubTypeIdList,
            @Param("dataSourceId") String dataSourceId,
            @Param("type") Integer type,
            @Param("statDate") String statDate);


    /**
     * 查询折线图数据
     *
     * @param pattern          时间格式
     *                         按天统计：DATE_FORMAT(start_time,'%Y%m%d')
     *                         按周统计：DATE_FORMAT(start_time,'%Y%u')
     *                         按月统计：DATE_FORMAT(start_time,'%Y%m')
     * @param type             数据源结构类型
     * @param allSubTypeIdList 分类下所有子分类
     * @param dataSourceId     数据源ID
     * @param startTime        统计开始时间
     * @param endTime          统计结束时间
     * @return 折线图数据
     */
    List<DlmStatDTO> getStateLineChartData(@Param("pattern") String pattern,
                                           @Param("allSubTypeIdList") List<String> allSubTypeIdList,
                                           @Param("dataSourceId") String dataSourceId,
                                           @Param("type") Integer type,
                                           @Param("startTime") String startTime,
                                           @Param("endTime") String endTime,
                                           @Param("endIndex") Integer endIndex);

    /**
     * 获取最新一天的数据
     *
     * @param dataSourceId 数据源ID
     * @return 最新一天的数据
     */
    Long selectLatestAmount(@Param("dataSourceId") String dataSourceId);

}